package com.relax.mybatis.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.relax.mybatis.constant.Algorithm;
import com.relax.mybatis.constant.EncryptConstants;

/**
 * @author relax
 * @date 2022/07/05
 * @desc 标记需要加密的字段，在写请求时对数据进行加密，在读请求时对数据进行解密
 */
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface EncryptField {

    /**
     * 加密算法，默认PBE MD5 DES混合算法
     *
     * @return Algorithm
     * @see com.relax.mybatis.constant.Algorithm
     */
    Algorithm algorithm() default Algorithm.PBEWithMD5AndDES;

    /**
     * 加密密码，默认为"123456789"
     */
    String password() default EncryptConstants.DEFAULT_PASSWORD;

}
